Method And Apparatus For Code Group Identification And Frame Synchronization By Use Of Reed-Solomon Decoder And Reliability Measurement For UMTS W-CDMA

ABSTRACT

A method and apparatus having a modified Reed-Solomon decoder is used for finding a specific code group used by a base station and the frame timing synchronization with the base station. The modified Reed-Solomon decoder uses a standard Reed-Solomon decoder and some reliability measurements computed from the received code word symbols. If the reliability of a received symbol is too low, this symbol is considered as erasure. By selecting code word symbols with higher reliabilities and erasing code word symbols with lower reliabilities, the symbol error probability is reduced and the performance is improved. Several modified Reed-Solomon decoders and a few decoding strategies are introduced in order to decode the received code word sequences with a power- and memory-effective method.

CROSS-REFERENCES TO RELATED APPLICATIONS

This is a division of U.S. application Ser. No. 10/316,319, filed Dec. 10, 2002, which is a non-provisional application of U.S. provisional Application No. 60/412,532, filed Sep. 19, 2002. The above provisional and non-provisional applications are incorporated herewith by reference.

FIELD OF THE INVENTION

The present invention generally relates to an apparatus and method for code group identification and frame synchronization used in direct-sequence code division multiple access (DS-CDMA) communication systems, such as wide-band CDMA systems and 3rd generation partnership project (3GPP) system.

BACKGROUND OF THE INVENTION

Currently, DS-CDMA cellular systems are classified as inter-cell synchronous systems with precise inter-cell synchronization and asynchronous systems without it. For inter-cell synchronous systems, an identical long code is assigned to each base station, but with a different time offset. The initial cell search can be executed by performing timing acquisition of the long code. The search for a peripheral cell on hand-over can be carried out quickly because the mobile station can receive the offset information of the long code for the peripheral base station from the current base station. Therefore, each base station requires a precise-time synchronization apparatus, such as the global position system (GPS) and rubidium backup oscillators. However, it is difficult to deploy GPS in basements or other locations where RF signals cannot easily reach.

In asynchronous systems such as wide-band CDMA and 3GPP, each base station adopts two synchronization channels such that a mobile terminal can establish the link and will not lose the connection on hand-offs by acquiring the synchronization codes transmitted in synchronization channels. The first synchronization channel (primary synchronization channel, hereinafter PSCH) consists of an unmodulated primary synchronization code (denoted as C_(psc)) with length of 256 chips transmitted once every slot. C_(psc) is the same for all base stations. This code is periodically transmitted such that it is time-aligned with the slot boundary of downlink channels. The secondary synchronization channel (hereinafter SSCH) consists of a sequence of 15 unmodulated secondary synchronization codes (C_(ssc) ^(i,0) to C_(ssc) ^(i,14)) repeatedly transmitted in parallel with C_(psc) in the PSCH. The 15 secondary synchronization codes are sequentially transmitted once every frame. Each secondary synchronization code is chosen from a set of 16 different orthogonal codes of length 256 chips. This sequence on the SSCH corresponds to one of the 64 different code groups which the base station downlink scrambling code belongs to. The code allocation for a base station is shown in Table 1 as illustrated in FIG. 9. These 64 sequences are constructed such that their cyclic-shifts are unique. In other words, if the count of cyclic-shifting is 0 to 14, all 960 (=64*15) possible sequences generated by cyclic-shifting the 64 sequences are different from each other. Base upon this property, cell search algorithms can be developed to uniquely determine both the code group and the frame timing.

During the initial cell search for the wide-band CDMA system proposed by 3GPP, a mobile station searches for the base station to which it has a lowest path loss. It then determines the downlink scrambling code and frame synchronization of the base station. This initial cell search is typically carried out in three steps:

Step 1: Slot Synchronization

During the first step of the initial cell search procedure, the mobile station searches for the base station to which it has lowest path loss via the primary synchronization code transmitted on the PSCH. This is typically done with a single matched filter matching to the primary synchronization code. Since the primary synchronization code is common to all the base stations, the power of the output signal of the matched filter should have peaks for each ray from each base station within a receivable range. The strongest peak corresponds to the most stable base station for linking. Detecting the position of the strongest peak yields the timing and the slot length that the strongest base station modulates. That is, this procedure allows the mobile station to acquire slot synchronization to the strongest base station.

Step 2: Frame Synchronization and Code-Group Identification

During the second step of the cell search procedure, the mobile station utilizes the secondary synchronization code in the SSCH to find the frame synchronization and the code group of the cell found in the first step. Since the secondary synchronization code is transmitted in parallel with the primary synchronization code, the slot timing of the secondary synchronization channel can also be found during the first step. The received signal at each time slot of the secondary synchronization channel is consequently correlated with 16 possible secondary synchronization code word symbol signals for code word symbol identification for code identification. The 15 consecutive code word symbols received and identified within one frame construct a received sequence. By sending the received sequence into a Reed-Solomon Decoder or by correlating the received sequence with the 960 possible sequences, the code group for the synchronized base station as well as the frame synchronization can be determined.

Step 3: Scrambling-Code Identification

During the last step of the cell search procedure, the mobile terminal determines the exact primary scrambling code used by the found base station. The primary scrambling code is typically identified through symbol-to-symbol correlation over the Common Pilot Channel (hereinafter CPICH) with all codes within the code group identified in the second step. After the identification of the primary scrambling code, the Primary Common Control Physical Channel (hereinafter PCCPCH) can be detected. Then the system- and cell-specific information can be read.

In summary, the main tasks of the initial cell search procedure are to (1) search for a cell with the strongest received power, (2) determine frame synchronization and code group, and (3) determine the down-link primary scrambling code.

The cell search procedure (2) is the subject of this invention. The SSCH is used to determine frame synchronization. A frame of 15 SSCH symbols forms a code word sequence taken from a codebook of 64 different code word sequences. The same code word sequence is repeated every frame in a cell. The 64 code word sequences are chosen to have distinct code phase shifts, and any phase shift of a code word sequence is different from all phase shifts of all other code word sequences. With these properties, the frame boundary can be detected by identifying the correct starting phase of the SSCH symbol sequence. In order to satisfy the above properties and maximize the minimum distance between different code word sequences, a (15,3) Comma-Free Reed-Solomon Code over GF(16) is proposed.

The standard Reed-Solomon decoder for (15,3) Comma-Free Reed-Solomon can be found in textbooks about error correcting codes and can correct up to 6 symbol errors. However, due to the frequency error, channel fading, channel noise or other reasons, the number of symbol errors may exceed 6 frequently. Therefore, the standard Reed-Solomon decoder fails to return a valid code word.

Another method is proposed by Yi-Ping Eric Wang in “IEEE Journal on Selected Areas in Communications vol. 18, no. 8 Aug. 2000”. Wang proposed that after achieving slot synchronization, the receiver operations start with correlating the received signal of SCH with all 16 S-SCH sequences, and then accumulates SSCH correlations over N_(t) slots according to the 64 Reed-Solomon code word sequences used, each with 15 hypothesized frame boundaries. The total number of hypotheses is therefore 960. At the end, the hypothesis with the largest accumulated metric is chosen as the candidate for frame boundary-code group pair, which is given to next stage for scrambling code identification.

The method proposed by Wang has better performance, but it needs large amount of memory and large amount of computation work. In our invention, we provide a power- and memory-effective method by use of standard Reed-Solomon decoder combined with reliability measurement.

SUMMARY OF THE INVENTION

According to the present invention, the disclosed exemplary embodiments may provide a power- and memory-effective method and apparatus for frame synchronization and code group identification. Accordingly, In an exemplary embodiment, the disclosed is directed to an apparatus for frame synchronization and code group identification, comprising: a correlator bank having a plurality of correlators, a hard decision and reliability measurement unit, a code sequence identifier, a frame boundary finder and a code group identification unit.

When each signal is received, the signal is sent to the correlator bank to identify the correlation between the current received signal and 16 orthogonal code word symbols. The hard decision and reliability measurement unit then chooses the hard decision symbol with the highest correlation, and the reliability is computed as a function of 16 correlations.

Accordingly, the invention may provide a modified Reed-Solomon decoder in the code sequence identifier to decode the code word sequence. In an exemplary embodiment, the modified Reed-Solomon decoder uses a threshold to determine if a code word symbol should be erased or not based on the reliability of the hard decision symbol. When the number of valid symbols exceeds or equals to a threshold which is between 3 and 15, the whole code sequence is sent to a standard Reed-Solomon error and erasure decoder for decoding.

In another exemplary embodiment, the modified Reed-Solomon decoder compares the number of erasures in a code word sequence with a threshold which is an integer between 0 and 12. If the number of erasures is not larger than a threshold, the code sequence is sent to a standard Reed-Solomon error and erasure decoder. If the decoder does not return a valid code, k additional code word symbols with lowest reliabilities are erased and the new code sequence is sent to the standard Reed-Solomon error and erasure decoder again.

The invention may further reduce the symbol error probability and improve the performance of the code sequence identifier by using more than one frame of code word symbols. Accordingly, a symbol and reliability update unit is added in the code sequence identifier. Because the code word symbols are transmitted cyclically, after a frame of code words is received and recorded, the next code word symbol ideally is identical to the first code word symbol in the recorded frame. The next code word symbol and its reliability are used to update the corresponding code word symbol in the recorded frame. When more than one frame of symbols are received, a decoding strategy is to update the hard decision symbols with the additional symbols according to their reliabilities. The updated code sequence is then decoded by the modified Reed-Solomon decoder.

Another exemplary decoding strategy for using more than one code word sequence is to first receive two code word sequences and then generate a new code word sequence by comparing the two code word sequences. A code word symbol is erased if the corresponding code word symbols in the two received sequences are not identical. The new code word sequence is then sent to a standard Reed-Solomon error and erasure decoder.

An alternative exemplary decoding strategy includes using hard decision on multiple frames of code word symbols with voting. A number of code word sequences are received and their hard-decision symbol values are recorded. A new code word sequence is generated by taking the majority vote of the corresponding code word symbols in the multiple frames. The new code word sequence is then sent to a standard Reed-Solomon error and erasure decoder.

The invention may further provide a method of frame synchronization. By observing the 64 code word sequences in Table 1, the present invention found that the first code word symbol in a frame must have a smallest symbol value. If the smallest symbol value is unique, this symbol is the head of the frame. If the smallest symbol value is found twice, then the neighboring symbol after the head of the frame must have a smaller value than the neighboring symbol after the smallest symbol found in the other slot.

The invention may also provide a memory efficient method for identifying the code group of the code word sequence. The 64 code word groups that are valid code words of comma-free Reed-Solomon codes also have the feature that the code word sequence in each group can be uniquely identified by the first three code word symbols. By storing the first three code word symbols of each code word group in the 64 code word groups, the code number of a received code word sequence can be identified.

The foregoing and other features, aspects and advantages of the present invention will become better understood from a careful reading of a detailed description provided herein below with appropriate reference to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention can be understood in more detail by reading the subsequent detailed description in conjunction with the examples and references made to the accompanying drawings, wherein:

FIG. 1 illustrates the block diagram of the apparatus for code group identification and frame synchronization according to the invention;

FIG. 2 illustrates the flow chart of an embodiment of modified Reed-Solomon Decoder—“Threshold-Erase Decoder”;

FIG. 3 illustrates the flow chart of an alternative embodiment of modified Reed-Solomon Decoder—“Erase k by k Decoder”;

FIG. 4 illustrates the symbol and reliability update procedure;

FIG. 5 illustrates a decoding procedure after receiving more than one frame;

FIG. 6 illustrates a decoding strategy of multi frames with hard decision only;

FIG. 7 illustrates a decoding strategy of multi frames with voting; and

FIG. 8 illustrates the frame boundary finder.

FIG. 9 illustrates the table of 64 groups of valid code words of comma-free Reed-Solomon codes.

DETAILED DESCRIPTION OF THE EMBODIMENTS

The gist of the present invention is using a standard Reed-Solomon error-and-erasure decoder combined with reliability measurement for code group identification and frame synchronization in UMTS WCDMA systems. FIG. 1 shows a block diagram of the apparatus for frame synchronization and code group identification of this invention. The apparatus comprises a correlator bank having a plurality of correlators 101, a hard decision and reliability measurement unit 102, a code sequence identifier 103, a frame boundary finder 104 and a code group identification unit 105.

It is known that each one of the 64 code groups of secondary synchronization code corresponds to a valid code word from (15,3) Reed-Solomon code. In general, after 16 Walsh code correlators, the hard-decision symbol error rate is too high that in most cases the standard Reed-Solomon decoder fails to return a valid code word. However, using a Reed-Solomon decoder has many advantages such as less memory requirement and low computation complexity.

According to this invention, when a signal is received, it is sent to the correlator bank comprising 16 correlators 101 to identify the correlation between the current received signal with the 16 orthogonal code word symbols CS₀₁, CS₀₂, . . . , and CS₁₆. The output correlation values from the 16 correlators at time m are {r⁰¹ _(m), r⁰² _(m), . . . , r¹⁶ _(m)}. The hard decision symbol value R_(m) at time m is chosen from {CS₀₁, CS₀₂, . . . , CS₁₆} with the highest correlation. The reliability measurement is defined as a function of the 16 correlation values {r⁰¹ _(m), r⁰² _(m), . . . , r¹⁶ _(m)}, which is used to measure how reliable the hard decision symbol value R_(m) is. For example, reliability measurement L_(m) can be defined as

L_(m) = max (r_(m)⁰¹, r_(m)⁰², …  , r_(m)¹⁶).or $L_{m} = {\frac{\max \left( {r_{m}^{01},r_{m}^{02},\ldots \mspace{14mu},r_{m}^{16}} \right)}{\sum\limits_{j = 1}^{16}\; {r_{m}^{j}}}.}$

As shown in FIG. 1, the hard decision and reliability measurement unit 102 receives the correlation values from the plurality of correlators 101 to choose a symbol R_(m) by making a hard decision. A reliability measurement L_(m) for the chosen symbol is then calculated according to a pre-determined formula shown above.

Since each one of the 64 code groups is a valid code word from (15,3) Reed-Solomon codes, the minimum number of code word symbols required is 3 for the Reed-Solomon decoder to return a valid code. When all code word symbols are received, this invention selects code word symbols with higher reliability measurements and erase others. Based on the property of (15,3) Reed-Solomon codes, at most 12 code word symbols with low reliability can be erased if all 15 code word symbols are received.

According to the present invention, the code sequence identifier 103 comprises a modified Reed-Solomon decoder 111. An embodiment of the modified Reed-Solomon decoder 111 is a “threshold-erase decoder” in which a threshold σ_(r) is used to determine if a code word symbol should be erased based on the reliability measurement calculated in the hard decision and reliability measurement unit 102.

FIG. 2 shows a flow chart of the method of implementing the threshold-erase decoder for the modified Reed-Solomon decoder 111. When a new code word symbol is received, its hard decision symbol value and corresponding reliability are recorded. If the reliability is less than the threshold σ_(r), the received code word symbol is considered an invalid symbol, an erasure is declared, and the corresponding reliability is set to be −∞. If the reliability is larger than σ_(r), the hard decision symbol value is recorded and the number of valid symbol (VSN) is increased by 1.

When the number of valid symbols is larger than or equal to a threshold σ_(v), which is an integer between 3 and 15 and is a function of the received symbol number (RSN), the whole code sequence is sent to the standard Reed-Solomon error-and-erasure decoder. If the decoding process fails and the RSN is less than 15, another new code word symbol is received. If the reliability of the new symbol is larger than σ_(r), the new code sequence (with a new received code word symbol) is sent to a standard Reed-Solomon error and erasure decoder again. The whole decoding process ends when the standard Reed-Solomon decoder returns a valid code word or exits when all 15 code word symbols are received.

FIG. 3 shows another embodiment for the modified Reed-Solomon decoder 111 which is named “erase k by k decoder”. A code sequence with 15 code symbols is sent into the “erase k by k decoder”. The hard-decision symbol values (R₀,R₁,R₂, . . . , R₄) and their corresponding reliabilities (L₀,L₁,L₂, . . . , L₁₄) are recorded. It should be noted that some of the code symbols may not be received or may be erased invalid symbols and, therefore, they are viewed as erasures and their reliabilities are set to be −∞.

The total number of erasures e₀ is determined and compared with a threshold σ_(e), which is an integer between 0 and 12. If the number of erasures e₀ is not larger than σ_(e), the code sequence is sent to the standard Reed-Solomon error and erasure decoder. If the decoding process fails, (L₀,L₁,L₂, . . . , L₁₄) is first sorted in an ascending order (L₍₀₎,L₍₁₎,L₍₂₎, . . . , L₍₁₄₎₎, wherein L_((i)) corresponds to R_((i)). At this moment, there are e₀ erasures and, thus, R₍₀₎, R₍₁₎, . . . , R_((e0−1)) are erasures and L₍₀₎=L₍₁₎= . . . =L_((e0−1))=−28. In L_((e0)), L_((e0+1)), . . . , L₍₁₄₎, the lowest k reliabilities (corresponding to symbols which are not erasures) are L_((e0)), L_((e0+1)), . . . , L_((e0+k−1)).

The k code word symbols R_((e0)), R_((e0+1)), . . . , R_((e0+k−1)) with corresponding reliabilities L_((e0)), L_((e0+1)), . . . , L_((e0+k−1)) are then erased, wherein k is a positive integer and is a function of current e₀,i.e., it can be changed in each erase process. The number of erasure becomes e₀+k. Compare the current number of erasure (e₀+k) with the threshold σ_(e). If the number of erasure is not larger than σ_(e), the new code sequence (with k more erasures) is sent to the Reed-Solomon decoder again. The whole erase-compare-decode process ends when a valid code word is returned from the standard Reed-Solomon error and erasure decoder or the number of erasure exceeds the threshold σ_(e).

To further reduce the symbol error probability and improve the performance of the code sequence identifier 103, the invention may use more than one frame of code word symbols. Accordingly, a symbol and reliability update unit 112 may be added in the code sequence identifier 103 as shown in FIG. 1. A method of updating the hard decision symbol value and reliability measurement when more than 15 symbols are received as well as a decoding procedure using more than one frame will be discussed in the following.

Because the 15 code word symbols are cyclically transmitted, if a code sequence of 15 code word symbols fails to be decoded, it is not necessary to abandon this code sequence. In other words, new code word symbols can be received and used to update the hard-decision symbol values and the corresponding reliability measurements. FIG. 4 illustrates an embodiment of the method for updating the hard decision symbol value and reliability measurement.

Assume the previous received code word sequence of 15 code symbols is (R₀, R₁, R₂, . . . , R₁₄) and the corresponding reliabilities is (L₀, L₁, L₂, . . . , L₁₄). Since the 15 code word symbols are cyclically transmitted, ideally,

R_(i)=R_(i mod 15)∀i=15,16,17, . . .

After a frame of code word symbols is received, the total RSN is 15. When the 16th code word symbol is received, the hard-decision symbol value R′ (or R₁₅) and the corresponding reliability L′ (or L₁₅) are recorded. Ideally, R′ should be equal to R₀. But in the presence of the noise or other reasons, the hard-decision symbol values R₀ and R₁₅ may not be equal. If the two hard-decision symbol values (R₀ and R₁₅) are equal, the reliability L₀ is updated by increasing the reliability for a certain amount. The amount of increased reliability is a function of the original reliability L₀ and the current received reliability L₁₅. For example, these two reliabilities can be added to represent the new reliability,

L ₀ _((after updating)) =L ₀ +L ₁₅

However, if the two hard-decision symbol values (R₀ and R₁₅) are not equal, the symbol and the corresponding reliability have to be updated based on the result of comparing their corresponding reliabilities (L₀ and L₁₅). The hard-decision symbol value after updating is set to be the symbol value whose corresponding reliability is larger.

$R_{0{({{after}\mspace{14mu} {updating}})}} = \left\{ \begin{matrix} {R_{0},} & {{{if}\mspace{14mu} R_{0}} \neq {R_{15}\mspace{14mu} {and}\mspace{14mu} L_{0}} \geq L_{15}} \\ {R_{15},} & {{{if}\mspace{14mu} R_{0}} \neq {R_{15}\mspace{14mu} {and}\mspace{14mu} L_{0}} < L_{15}} \end{matrix} \right.$

Also, the reliability after updating should be decreased. The amount of decreased reliability is also a function of L₀ and L₁₅. For example,

L _(0(after updating)=max() L ₀ ,L ₁₅)−min(L ₀ ,L ₁₅)

By the same token, when the 17th code word symbol (R₁₆) is received (RSN equals to 16 now), ideally, R₁₆ should be equal to R₁. The hard-decision symbol value and reliability update procedure can again be applied to R₁ and R₁₆, and so on and so forth.

With the method of updating the hard decision symbol value and reliability for R_(i) and R_(i mod 15), the decoding procedure can then be introduced. FIG. 5 shows a decoding strategy when more than one frame (15 symbols) are received. When the original code word sequence of 15 code word symbols R=(R₀, R₁, R₂, . . . , R₁₄) fails to be decoded, σ_(N) new code word symbols may be received. For example, if σ_(N) is equal to 4, 4 new code word symbols (R₁₅, R₁₆, R₁₇, R₁₈) are received. Applying the symbol value and reliability update procedure to R₀ and R₁₅, R₁ and R₁₆, R₂ and R₁₇, R₃ and R₁₈, a new code word sequence R′ can be obtained. It is worth noting that even if the hard-decision symbol values may not be changed, the corresponding reliabilities may be different.

The new code word sequence R′ and new reliability sequence L′ are sent to the modified Reed-Solomon decoder. If the new code word sequence R′ fails to be decoded again, another σ_(N) new code word symbols may be received to obtain another new code word sequence R″ and new reliability sequence L″, wherein σ_(N) can be any positive integer and can be changed for each update procedure. Again, R″ and L″ are sent to the modified Reed-Solomon decoder shown in FIG. 2 and FIG. 3 or the combination of them. The whole decoding procedure ends when the modified Reed-Solomon decoder returns a valid code word sequence. To avoid an endless loop due to a low signal-to-noise ratio or other reasons, a limitation of total RSN is used to terminate the loop. When the total received symbol number exceeds a pre-determined integer value MAX_RSN, the current code sequence will be abandoned.

FIG. 6 shows another decoding strategy for more than one code word sequence with hard decision only. Two code word sequences R ¹ and R ² are received first. Their hard-decision symbol values are R ¹=(R¹ ₀, R¹ ₁, R₂, . . . , R¹ ₁₄) and R ²=(R² ₀, R² ₁, R² ₂, . . . , R² ₁₄) respectively. Compare R¹ _(j) and R² _(j) for j=0, 1, 2, . . . , 14. If the hard-decision symbol values (R¹ _(j) and R² _(j)) are not the same, R_(j) is declared as erasure. After comparing 15 symbols in R ¹ and R ² if the total number of erasures e₀ being declared erasure is smaller than threshold σ_(e), which can be any integers from 1 to 13, the code word sequence R=(R₀, R₁, R₂, . . . , R₁₄) with e₀ erasures is sent to the standard Reed-Solomon error and erasure decoder.

If the code sequence R fails to be decoded, these two code word sequences may simply be discarded or other decoding strategies may be tried. On the other hand, another code word sequence R ³ with 15 code word symbols may continue to be received. By comparing R ³ to the previous recorded code word sequence R, a new resulting code word sequence can be recorded in R′ using the procedure described above. If the total number of erasures e₀ being declared in R′ is smaller than the threshold σ_(e), which may be decreased, the code word sequence R′ with e₀ erasures is sent to the standard Reed-Solomon error and erasure decoder. The whole procedure ends when the standard Reed-Solomon error and erasure decoder returns a valid code word or the number of received code word sequence is equal to a maximum number of code word sequences allowed.

FIG. 7 shows an alternative decoding strategy using hard decision with voting. At the beginning, σ_(s) code word sequences are received and their hard-decision symbol values R ¹=(R¹ ₀, R¹ ₁, R¹ ₂, . . . , R¹ ₁₄), R ²=(R² ₀, R² ₁, R² ₂, . . . , R² ₁₄), . . . , R ^(σs)=(R^(σs) ₀, R^(σs) ₁, R^(σs) ₂, . . . , R^(σs) ₁₄) are recorded. For each code word symbol, the hard-decision symbol value R_(j), j=0, 1, 2, . . . , 14, is set to be the value by taking the majority vote of the set {R¹ _(j), R² _(j), R³ _(j), . . . , R^(σs) _(j)}. The resulting code word sequence is recorded in R=(R₀, R₁, R₂, . . . , R₁₄) and sent to the standard Reed-Solomon error and erasure decoder. If the decoding process fails, a new code word sequence may be received, and the majority vote is taken and then, the resulting code word sequence is decoded again. The whole decoding strategy ends when the standard Reed-Solomon error and erasure decoder returns a valid code word or the number of received code word sequences equals the maximum number of code word sequence allowed.

As shown in FIG. 1, after the correct code sequence has been identified by the code sequence identifier 103, the frame boundary of the code sequence is determined by the frame boundary finder 104. FIG. 8 illustrates the method to finding the frame boundary after the Reed-Solomon decoder returns a valid code word sequence.

With reference to Table 1, it can be observed that the 64 code word sequences from the 64 groups are valid code words of comma-free Reed-Solomon codes, i.e., all code words do not have internal repetition. In addition, in each code word sequence of 15 code word symbols, the first code word symbol has the smallest symbol value, and the smallest symbol value is found at most twice in this code word sequence. If the smallest symbol value is unique, this symbol is the head of the frame. If the smallest symbol value is found twice, then the neighboring symbol after the head of the frame must have a smaller value than the neighboring symbol after the smallest symbol found in the other slot. For example, if the smallest symbol is found at slot number=0 and slot number=j, the symbol at the slot number=1 must have a smaller symbol value than the symbol at slot number=j+1.

As an example, the code word in Group 0 is (1, 1, 2, 8, 9, 10, 15, 8, 10, 16, 2, 7, 15, 7, 16) in which the smallest symbol value is 1. The smallest symbol value is found twice in slot number=0 and slot number=1. Comparing the two symbol values of the next symbols, i.e., slot number=1 and slot number=2, the symbol after the head of the frame, i.e., slot number=1, has a smaller symbol value. Take another example, the code word in Group 63 is (9, 12, 10, 15, 13, 14, 9, 14, 15, 11, 11, 13, 12, 16, 10) in which the smallest symbol value is 9. The smallest symbol value is found twice in slot number=0 and slot number=6. Comparing the two symbol values of the next symbols, i.e., slot number=1 and slot number=7, the symbol after the head of the frame, i.e., slot number=1 has a smaller symbol value.

As discussed before, the valid code word sequence returned by the Reed-Solomon decoder may be a cyclic shift of the original code word sequence. The frame boundary can be determined by finding the smallest two symbol values in the code word sequence. If the smallest two symbol values are not equal, the head index of frame boundary is the index of the smallest symbol value. If the smallest two symbol values are equal, the head index can be determined by comparing the two symbol values of the next symbols. Based on the property introduced above, it is easy to find the head index of the frame boundary.

Moreover, after the frame boundary has been determined, the apparatus of this invention identifies the code group using the code group identification unit 105. With reference to Table 1, it is observed that the code word sequence in each group can be uniquely identified by the first three code word symbols. By use of the property, only the first three columns of Table 1 have to be stored. By comparing the first three code word symbols, the code group number can be identified. Consequently, the memory requirement is much reduced in the code group identification unit of this invention.

It is worth mentioning that FIGS. 2 and 3 illustrate a “threshold-erase decoder” and an “erase k by k decoder” respectively for the modified Reed-Solomon decoder 111 of this invention. Variation of these decoders can be made for the modified Reed-Solomon decoder. For example, the “threshold-erase decoder” and “erase k by k decoder” can also be combined if desired.

Although the present invention has been described with reference to the exemplary embodiments, it will be understood that the invention is not limited to the details described thereof. Various substitutions and modifications have been suggested in the foregoing description, and others will occur to those of ordinary skill in the art. Therefore, all such substitutions and modifications are intended to be embraced within the scope of the invention as defined in the appended claims. 

1. A method for generating a corrected code sequence, comprising: (a) receiving a frame of code word symbols; (b) forming a sequence of hard decision symbols from said frame of code word symbols, each hard decision symbol having a corresponding reliability; (c) sending said sequence of hard decision symbols and corresponding reliabilities to a modified Reed-Solomon decoder; (d) generating a corrected code sequence using said modified Reed-Solomon decoder and ending said method if said modified Reed-Solomon decoder returns successfully; (e) ending said method if total number of code word symbols received is greater than a limit; (f) receiving a number of additional code word symbols; (g) updating said sequence of hard decision symbols and corresponding reliabilities based on said additional code word symbols; and (h) returning to step (c).
 2. The method for generating a corrected code sequence as claimed in claim 1, wherein an additional code word symbol with a receiving index m is used is said step (g) according to the steps of: (g1) determining a new hard decision symbol and a new corresponding reliability for said additional code word symbol; (g2) identifying an associated hard decision symbol having a receiving index equal to the remainder of m divided by n, n being the number of symbols in said sequence of hard decision symbols; (g3) increasing the corresponding reliability of said associated hard decision symbol if said new hard decision symbol is identical to said associated hard decision symbol; (g4) decreasing the corresponding reliability of said associated hard decision symbol if said new hard decision symbol is not identical to said associated hard decision symbol and said new corresponding reliability is less than the corresponding reliability of said associated hard decision symbol; and (g5) replacing said associated hard decision symbol and corresponding reliability with said new hard decision symbol and decreased new corresponding reliability if said new hard decision symbol is not identical to said associated hard decision symbol and said new corresponding reliability is greater than the corresponding reliability of said associated hard decision symbol.
 3. The method for generating a corrected code sequence as claimed in claim 1, wherein said modified Reed-Solomon decoder in said step (d) performs: (i) receiving a new symbol from said sequence of hard decision symbols; (ii) declaring said new symbol as a valid symbol if the corresponding reliability of said new symbol is greater than a reliability threshold, or as an invalid symbol otherwise; (iii) recording total number of valid symbols; (iv) sending a code sequence based on valid symbols to a Reed-Solomon error-and-erasure decoder if said recorded total number of valid symbols is greater than a threshold of total number of valid symbols, or execute step (vi) otherwise; (v) generating said corrected code sequence and ending said step (d) if said Reed-Solomon error-and-erasure decoder returns successfully; and (vi) ending said step (d) if all symbols of said sequence of hard decision symbols have been received, or returning to step (i) otherwise.
 4. The method for generating a corrected code sequence as claimed in claim 3, wherein said sequence of hard decision symbols has at most 15 hard decision symbols, and said threshold of total number of valid symbols is an integer number between 3 and 15 and is a function of the number of hard decision symbols received.
 5. The method for generating a corrected code sequence as claimed in claim 1, wherein said modified Reed-Solomon decoder in said step (d) performs: (i) receiving a sequence of hard decision symbols including valid symbols and invalid symbols; (ii) sending a code sequence based on valid symbols to a Reed-Solomon error-and-erasure decoder if total number of invalid symbols in said sequence of hard decision symbols is not greater than a threshold of total number of invalid symbols, or ending said step (d) otherwise; (iii) generating said corrected code sequence and ending said step (d) if said Reed-Solomon error-and-erasure decoder returns successfully; (iv) selecting k symbols from current valid symbols of said sequence of hard decision symbols, said k symbols having lowest k reliabilities among all current valid symbols of said sequence of hard decision symbols; (v) declaring said k symbols invalid and determining total number of invalid symbols from said sequence of hard decision symbols; and (vi) returning to step (ii) if total number of invalid symbols in said sequence of hard decision symbols is not greater than said threshold of total number of invalid symbols, or ending said step (d) otherwise.
 6. The method for generating a corrected code sequence as claimed in claim 5, wherein said sequence of hard decision symbols has at most 15 hard decision symbols, and said threshold of total number of invalid symbols is an integer number between 0 and
 12. 7. A method for generating a corrected code sequence, comprising: (a) receiving first and second frames of code word symbols; (b) forming first and second sequences of hard decision symbols from said first and second frames of code word symbols; (c) comparing each hard decision symbol in said first sequence with a corresponding hard decision symbol in said second sequence and declaring said hard decision symbol valid if corresponding hard decision symbols are identical and invalid if not identical; (d) sending a code sequence based on valid hard decision symbols determined from step (c) to a Reed-Solomon error-and-erasure decoder if total number of invalid hard decision symbols is less than a threshold of total number of invalid hard decision symbols, or ending said method otherwise; and (e) generating a corrected code sequence and ending said method if said Reed-Solomon error-and-erasure decoder returns successfully.
 8. A method for generating a corrected code sequence, comprising: (a) receiving a plurality of frames of code word symbols; (b) forming a plurality of sequences of hard decision symbols, each sequence corresponding to one of all received frames of code word symbols; (c) forming a new sequence of hard decision symbols, each hard decision symbol in said new sequence having a value determined by taking a majority vote of corresponding hard decision symbols in said plurality of sequences; (d) sending said new sequence to a Reed-Solomon error-and-erasure decoder; and (e) generating a corrected code sequence and ending said method if said Reed-Solomon error-and-erasure decoder returns successfully.
 9. The method for generating a corrected code sequence as claimed in claim 8, further comprising: (f) receiving a new frame of code word symbol if said Reed-Solomon error-and-erasure decoder fails to return a valid code sequence; and (g) returning to step (b). 